home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / z / swi / swi.c < prev   
C/C++ Source or Header  |  1996-04-25  |  1KB  |  70 lines

  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. #define BUFF_SIZE 1024
  7.  
  8. void main(int argc, char **argv)
  9. {
  10.     if( argc == 4 )
  11.     {
  12.         FILE *fsrc;
  13.         
  14.         if( fsrc = fopen(argv[3], "ra") )
  15.         {
  16.             char *tmpname;
  17.             
  18.             if( tmpname = tmpnam(NULL) )
  19.             {
  20.                 FILE *fdest;
  21.                 
  22.                 if( fdest = fopen(tmpname, "wb") )
  23.                 {
  24.                 
  25.                 char buffer[BUFF_SIZE];
  26.                 char *retbuf;
  27.                 
  28.                 for( retbuf = fgets(buffer, BUFF_SIZE, fsrc);
  29.                      retbuf;
  30.                      retbuf = fgets(buffer, BUFF_SIZE, fsrc) )
  31.                 {
  32.                     char *pos;
  33.                     
  34.                     if( pos = strstr(retbuf, argv[1]) )
  35.                     {
  36.                         char *s;
  37.                         
  38.                         //printf(" - \"%s\"", );
  39.  
  40.                         for( s = retbuf;
  41.                              s != pos;
  42.                              s++ )
  43.                             fputc(*s, fdest);
  44.                         
  45.                         for( s = argv[2];
  46.                              *s;
  47.                              s++ )
  48.                             fputc(*s, fdest);
  49.                         
  50.                         for( s = pos + strlen(argv[1]);
  51.                              *s;
  52.                              s++ )
  53.                             fputc(*s, fdest);
  54.                         
  55.                     } else
  56.                         fputs(retbuf, fdest);
  57.                 }
  58.                 fclose(fdest);
  59.                 fclose(fsrc);
  60.                 remove(argv[3]);
  61.                 rename(tmpname, argv[3]);
  62.                 fsrc = NULL;
  63.                 }
  64.             }
  65.             if( fsrc )
  66.                 fclose(fsrc);
  67.         }
  68.     }
  69. }
  70.